Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
8 / 8 |
| ResolveTargetRepositorySubscriber | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
4 | |
100.00% |
8 / 8 |
| getSubscribedEvents | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| addResolveTargetRepository | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| loadClassMetadata | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| <?php | |
| namespace Akeneo\Tool\Bundle\StorageUtilsBundle\EventSubscriber; | |
| use Doctrine\Common\EventSubscriber; | |
| use Doctrine\Common\Persistence\Event\LoadClassMetadataEventArgs; | |
| /** | |
| * Mechanism to overwrite repository class without redefine class mapping | |
| * | |
| * @author Romain Monceau <romain@akeneo.com> | |
| * @copyright 2014 Akeneo SAS (http://www.akeneo.com) | |
| * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) | |
| */ | |
| class ResolveTargetRepositorySubscriber implements EventSubscriber | |
| { | |
| /** | |
| * @staticvar array | |
| */ | |
| protected static $resolveTargetRepo = []; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getSubscribedEvents() | |
| { | |
| return [ | |
| 'loadClassMetadata' | |
| ]; | |
| } | |
| /** | |
| * Adds repository class for a class name | |
| * | |
| * @param string $object | |
| * @param string $newRepository | |
| */ | |
| public function addResolveTargetRepository($object, $newRepository) | |
| { | |
| static::$resolveTargetRepo[ltrim($object)] = $newRepository; | |
| } | |
| /** | |
| * Processes event and resolves new object repository class | |
| * | |
| * @param LoadClassMetadataEventArgs $args | |
| */ | |
| public function loadClassMetadata(LoadClassMetadataEventArgs $args) | |
| { | |
| $classMetadata = $args->getClassMetadata(); | |
| $className = $classMetadata->getName(); | |
| if (isset(static::$resolveTargetRepo[ltrim($className)])) { | |
| $classMetadata->customRepositoryClassName = static::$resolveTargetRepo[ltrim($className)]; | |
| } | |
| } | |
| } |